home *** CD-ROM | disk | FTP | other *** search
/ Graphics Plus / Graphics Plus.iso / general / viewers / polyview / polyvw31.lha / Polyview3.1 / new / Xmx.h < prev    next >
C/C++ Source or Header  |  1993-07-12  |  12KB  |  309 lines

  1. /*****************************************************************************
  2.  * NCSA Xmx X/Motif Extension Library.                                       *
  3.  *                                                                           *
  4.  * Designed and Implemented by Marc Andreessen (marca@ncsa.uiuc.edu).        *
  5.  *                                                                           *
  6.  * Software Development Group                                                *
  7.  * National Center for Supercomputing Applications                           *
  8.  * University of Illinois at Urbana-Champaign.                               *
  9.  *                                                                           *
  10.  * This is BETA release software.  As such it may contain software bugs and  *
  11.  * exhibit inconsistencies.                                                  *
  12.  *                                                                           *
  13.  * Copyright (c) 1992 The Board of Trustees of the University of Illinois.   *
  14.  *                                                                           *
  15.  * Permission to use, copy, and modify this software and its                 *
  16.  * documentation for educational, research, and non-profit purposes is       *
  17.  * hereby granted, provided that the above copyright notice, the original    *
  18.  * authors names, and this permission notice appear in all such copies.      *
  19.  * Any distribution of this software requires the explicit and written       *
  20.  * authorization of the authors.                                             *
  21.  *                                                                           *
  22.  * The University of Illinois makes no representations about the             *
  23.  * suitability of this software for any purpose.  It is provided "as is"     *
  24.  * without warranty of any kind.                                             *
  25.  *****************************************************************************/
  26.  
  27. /* $Header: /usr3/people/gbourhis/pv3/new/RCS/Xmx.h,v 1.2 93/07/12 09:32:57 gbourhis Exp $ */
  28.  
  29. #ifdef RCSLOG
  30. $Log:    Xmx.h,v $
  31.  * Revision 1.2  93/07/12  09:32:57  gbourhis
  32.  * Convert XmxSetArg() function to a cpp macro.
  33.  * 
  34.  * Revision 1.1  92/09/18  10:55:26  marca
  35.  * Initial revision
  36.  * 
  37. #endif
  38.  
  39. #ifndef __XMX_H__
  40. #define __XMX_H__
  41.  
  42. /* --------------------------- SYSTEM INCLUDES ---------------------------- */
  43.  
  44. /* Generic X11/Xt/Xm includes. */
  45. #include <X11/Intrinsic.h>
  46. #include <X11/StringDefs.h>
  47. #include <X11/Xutil.h>
  48. #include <X11/cursorfont.h>
  49. #include <Xm/Xm.h>
  50.  
  51. #ifdef __sgi
  52. /* Fast malloc. */
  53. #include <malloc.h>
  54. /* For GLXconfig type. */
  55. #include <X11/Xirisw/GlxMDraw.h>
  56. #endif
  57.  
  58. #ifdef _IBMR2
  59. /* nothing that I know of */
  60. #endif /* _IBMR2 */
  61.  
  62. /* --------------------------- INTERNAL DEFINES --------------------------- */
  63.  
  64. /* Maximum number of resource args usable --- should be large
  65.    since applications also can add resources. */
  66. #define XmxMaxNumArgs 30
  67.  
  68. /* ------------------------------ VARIABLES ------------------------------- */
  69.  
  70. /* These three will also be used from application code. */
  71. extern int Xmx_n;
  72. extern Arg Xmx_wargs[];
  73. extern Widget Xmx_w;
  74.  
  75. /* This probably won't be needed to be accessed
  76.    directly by an application; if not, it should be
  77.    moved to XmxP.h. */
  78. extern int Xmx_uniqid;
  79.  
  80. /* ------------------------------ CONSTANTS ------------------------------- */
  81.  
  82. /* These probably shouldn't be necessary, since we use
  83.    Gadgets whenever possible. */
  84. #define XmxWidget 0
  85. #define XmxGadget 1
  86.  
  87. /* XmxFrame types. */
  88. #define XmxShadowIn        0
  89. #define XmxShadowOut       1
  90. #define XmxShadowEtchedIn  2
  91. #define XmxShadowEtchedOut 3
  92.  
  93. /* Currently unused. */
  94. #define XmxLeft   XmALIGNMENT_BEGINNING
  95. #define XmxCenter XmALIGNMENT_CENTER
  96. #define XmxRight  XmALIGNMENT_END
  97.  
  98. /* Null values for some arguments. */
  99. #define XmxNotDisplayed -99999
  100. #define XmxNoPosition   -99999
  101. #define XmxNoOffset     -99999
  102.  
  103. /* States for togglebuttons. */
  104. #define XmxUnset  0
  105. #define XmxNotSet XmxUnset
  106. #define XmxSet    1
  107.  
  108. /* Sensitivity states. */
  109. #define XmxUnsensitive 0
  110. #define XmxNotSensitive XmxUnsensitive
  111. #define XmxSensitive 1
  112.  
  113. /* Types of togglebuttons. */
  114. #define XmxOneOfMany 0
  115. #define XmxNOfMany   1
  116.  
  117. /* Constraint possibilities. */
  118. #define XmxCwidget XmATTACH_WIDGET
  119. #define XmxCform   XmATTACH_FORM
  120. #define XmxCnone   XmATTACH_NONE
  121.  
  122. /* ---------------------------- MENU TYPEDEFS ----------------------------- */
  123.  
  124. /* Struct used by app when loading option menu.  The 'set_state'
  125.    parameter is used to indicate menu history for the option menu;
  126.    the entry with 'XmxSet' is used. */
  127. typedef struct _XmxOptionMenuStruct
  128. {
  129.   String namestr;
  130.   int data;
  131.   int set_state;
  132. } XmxOptionMenuStruct;
  133.  
  134. /* Toggle menu and option menu accept same struct. */
  135. typedef XmxOptionMenuStruct XmxToggleMenuStruct;
  136.  
  137. /* Menubar uses a recursive struct. */
  138. typedef struct _XmxMenubarStruct
  139. {
  140.   String namestr;
  141.   char mnemonic;
  142.   void (*func)();
  143.   int data;
  144.   struct _XmxMenubarStruct *sub_menu;
  145. } XmxMenubarStruct;
  146.  
  147. /* --------------------------- RECORD TYPEDEFS ---------------------------- */
  148.  
  149. /* These typedefs, while public, are not guaranteed to remain static
  150.    and should not be actually used by an application. */
  151.  
  152. /* A single entry in a menu (menubar, toggle menu, or option menu),
  153.    tagged by the integer token used as callback_data. */
  154. typedef struct _XmxMenuEntry
  155. {
  156.   Widget w;
  157.   int token;
  158.   struct _XmxMenuEntry *next;
  159. } XmxMenuEntry;
  160.  
  161. /* A menu (menubar, toggle menu, or option menu). */
  162. typedef struct _XmxMenuRecord
  163. {
  164.   Widget base;
  165.   XmxMenuEntry *first_entry;
  166. } XmxMenuRecord;
  167.  
  168. /* -------------------------------- MACROS -------------------------------- */
  169.  
  170. /* Callback definitions and prototypes. */
  171. #define XmxCallback(name)                              \
  172.   void name (Widget w, XtPointer client_data, XtPointer call_data)
  173. #define XmxCallbackPrototype(name)                                            \
  174.   extern void name (Widget, XtPointer, XtPointer)
  175.  
  176. /* Event handler functions and prototypes. */
  177. #define XmxEventHandler(name)                              \
  178.   void name (Widget w, XtPointer client_data, XEvent *event, Boolean *cont)
  179. #define XmxEventHandlerPrototype(name)                               \
  180.   extern void name (Widget, XtPointer, XEvent *, Boolean *)
  181.  
  182. /* Shortcut for XtAppInitialize --- of dubious value. */
  183. #define XmxInit()                                  \
  184.   XtAppInitialize (&app_context, "XmxApplication", NULL, 0, &argc, argv,      \
  185.                    NULL, Xmx_wargs, Xmx_n);
  186.  
  187. #define XmxSetArg(arg, val)                              \
  188. (                                          \
  189.   XtSetArg (Xmx_wargs[Xmx_n], arg, val),                      \
  190.   Xmx_n++                                      \
  191. )
  192.  
  193. /* ------------------------------ PROTOTYPES ------------------------------ */
  194.  
  195. /* Xmx.c */
  196. extern int XmxMakeNewUniqid (void);
  197. extern void XmxSetUniqid (int);
  198. extern void XmxZeroUniqid (void);
  199. extern int XmxExtractUniqid (int);
  200. extern int XmxExtractToken (int);
  201.  
  202. extern void XmxAddCallback (Widget, String, XtCallbackProc, int);
  203. extern void XmxAddEventHandler (Widget, EventMask, XtEventHandler, int);
  204. extern void XmxRemoveEventHandler (Widget, EventMask, XtEventHandler, int);
  205.  
  206. extern void XmxStartup (void);
  207. #if 0
  208. extern void XmxSetArg (String, XtArgVal);
  209. #endif
  210. extern void XmxSetValues (Widget);
  211. extern void XmxManageRemanage (Widget);
  212. extern void XmxSetSensitive (Widget, int);
  213.  
  214. extern Widget XmxMakePushButton (Widget, String, XtCallbackProc, int);
  215. extern Widget XmxMakeBlankButton (Widget, XtCallbackProc, int);
  216. extern Widget XmxMakeCommand (Widget, String, XtCallbackProc, int);
  217. extern Widget XmxMakeDrawingArea (Widget, int, int);
  218. extern Widget XmxMakeRadioBox (Widget);
  219. extern Widget XmxMakeOptionBox (Widget);
  220. extern Widget XmxMakeToggleButton (Widget, String, XtCallbackProc, int);
  221. extern void XmxSetToggleButton (Widget button, int set_state);
  222. extern Widget XmxMakeScale (Widget, XtCallbackProc, int, String, 
  223.                             int, int, int, int);
  224. extern void XmxAdjustScale (Widget, int);
  225. extern Widget XmxMakeFrame (Widget, int);
  226. extern Widget XmxMakeForm (Widget);
  227. extern void XmxSetPositions (Widget, int, int, int, int);
  228. extern void XmxSetOffsets (Widget, int, int, int, int);
  229. extern void XmxSetConstraints (Widget, int, int, int, int, Widget, Widget, 
  230.                                Widget, Widget);
  231. extern Widget XmxMakeVerticalRowColumn (Widget);
  232. extern Widget XmxMakeHorizontalRowColumn (Widget);
  233. extern Widget XmxMakeNColumnRowColumn (Widget, int);
  234. extern Widget XmxMakeVerticalBboard (Widget);
  235. extern Widget XmxMakeVerticalBboardWithFont (Widget, String);
  236. extern Widget XmxMakeHorizontalBboard (Widget);
  237. #ifdef NONWORKING_CENTERING
  238. extern Widget XmxMakeCenteringBboard (Widget, XtAppContext);
  239. #endif
  240. extern void XmxAdjustLabelText (Widget, String);
  241. extern Widget XmxMakeLabel (Widget, String);
  242. extern Widget XmxMakeBlankLabel (Widget);
  243. extern Widget XmxMakeErrorDialog (Widget, String, String);
  244. extern Widget XmxMakeInfoDialog (Widget, String, String);
  245. extern Widget XmxMakeQuestionDialog (Widget, String, String, XtCallbackProc, 
  246.                                      int, int);
  247. extern XmString XmxMakeXmstrFromFile (String);
  248. extern XmString XmxMakeXmstrFromString (String);
  249. extern Widget XmxMakeBboardDialog (Widget, String);
  250. extern Widget XmxMakeFormDialog (Widget, String);
  251. extern Widget XmxMakeFileSBDialog (Widget, String, String, XtCallbackProc, 
  252.                                    int);
  253. extern Widget XmxMakeHelpDialog (Widget, XmString, String);
  254. extern Widget XmxMakeHelpTextDialog (Widget, String, String, Widget *);
  255. extern void XmxAdjustHelpDialogText (Widget, XmString, String);
  256. extern void XmxAdjustDialogTitle (Widget, String);
  257. extern Widget XmxMakeHorizontalSeparator (Widget);
  258. extern Widget XmxMakeHorizontalSpacer (Widget);
  259. extern Widget XmxMakeHorizontalBoundary (Widget);
  260. extern Widget XmxMakeScrolledText (Widget);
  261. extern Widget XmxMakeText (Widget);
  262. extern void XmxTextSetString (Widget, String);
  263. extern String XmxTextGetString (Widget);
  264. extern void XmxAddCallbackToText (Widget, XtCallbackProc, int);
  265.  
  266. #ifdef __sgi
  267. extern Widget XmxMakeDrawingVolume 
  268.   (Widget, int, int, GLXconfig *, XtCallbackProc, XtCallbackProc,
  269.    XtCallbackProc);
  270. extern void XmxInstallColormaps (Widget, Widget);
  271. extern void XmxInstallColormapsWithOverlay (Widget, Widget);
  272. extern void XmxWinset (Widget);
  273. #endif
  274.  
  275. #ifdef _IBMR2
  276. extern Widget XmxMakeDrawingVolume 
  277.   (Widget, int, int, XtCallbackProc, XtCallbackProc,
  278.    XtCallbackProc);
  279. extern void XmxInstallColormaps (Widget, Widget);
  280. extern void XmxWinset (Widget);
  281. #endif
  282.  
  283. extern void XmxApplyBitmapToLabelWidget (Widget, String, unsigned int, 
  284.                                          unsigned int);
  285.  
  286. extern Widget XmxMakeFormAndOneButton (Widget, XtCallbackProc, String, int);
  287. extern Widget XmxMakeFormAndTwoButtons (Widget, XtCallbackProc, String, 
  288.                                         String, int, int);
  289. extern Widget XmxMakeFormAndTwoButtonsSqueezed (Widget, XtCallbackProc, String, 
  290.                                                 String, int, int);
  291. extern Widget XmxMakeFormAndThreeButtons (Widget, XtCallbackProc, String, 
  292.                                           String, String, int, int, int);
  293.  
  294. /* Xmx2.c */
  295. extern void XmxRSetSensitive (XmxMenuRecord *, int, int);
  296. extern void XmxRSetToggleState (XmxMenuRecord *, int, int);
  297. extern void XmxRUnsetAllToggles (XmxMenuRecord *);
  298. extern void XmxRSetOptionMenuHistory (XmxMenuRecord *, int);
  299. extern void XmxRSetValues (XmxMenuRecord *, int);
  300. extern Widget XmxRGetWidget (XmxMenuRecord *, int);
  301.  
  302. extern XmxMenuRecord *XmxRMakeOptionMenu (Widget, String, XtCallbackProc, 
  303.                                           XmxOptionMenuStruct *);
  304. extern XmxMenuRecord *XmxRMakeToggleMenu (Widget, int, XtCallbackProc, 
  305.                                           XmxToggleMenuStruct *);
  306. extern XmxMenuRecord *XmxRMakeMenubar (Widget, XmxMenubarStruct *);
  307.  
  308. #endif /* __XMX_H__ */
  309.